// 封装节流函数，修改商品数量操作做节流处理
const throttle = (handler, time) => { // 参数1：需要被节流的参数 参数2：间隔时间
    let timer = null
    return function () {
        if (timer) { // 如果timer存在，则说明已经触发过了，直接return
            return
        }
        // 如果timer不存在，则说明还没有触发过，则设置一个延时器，在指定的时间间隔后执行函数
        // 执行完函数后将timer设置为null,以便下次可以再次设置延时器
        timer = setTimeout(() => {
            // 使用call方法调用函数，并将this和arguments传入函数，确保函数调用时this指向和参数与原函数调用时一致
            handler.call(this, ...arguments)
            timer = null
        }, time)
    }
}
// 通过以上这种方式，throttle函数可以实现在指定的时间间隔内最多只执行一次，从而实现节流的效果
export default throttle

// 防抖和节流的区别：
// 节流是指在一定时间间隔内只执行一次操作。适用于防⽌超⾼频次触发
// 防抖是指在事件触发后等待一定时间再执行操作，若在此期间再次触发事件，则重新计时。 适用于搜索框输入、窗口调整大小等
